package com.molichuxing.services.infrastructure.service;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.business.dto.request.create.GoodsBaseCreateDto;
import com.molichuxing.services.infrastructure.dto.response.GoodsDto;
import com.molichuxing.services.property.GoodsForbidSaleEnum;
import com.molichuxing.services.property.GoodsTypeEnum;

import java.math.BigDecimal;
import java.util.List;

/**
 * 单服务 商品服务
 * @author xuelin yi
 */
public interface GoodsService extends RootService {

    /**
     * 根据商品的条件查询商品集合
     * @param goodsTypeEnum
     * @param code
     * @param carStyleId
     * @param pageNum
     * @param pageSize
     * @return
     */
    public Paged<GoodsDto> getGoodsProductList(GoodsTypeEnum goodsTypeEnum, String code, Integer carStyleId, Integer dealerId, List<Integer> goodsIds,int pageNum, int pageSize);


    /**
     * 根据商品的条件查询商品集合
     * @param goodsTypeEnum
     * @param carStyleId
     * @param rental
     * @return
     */
    public List<GoodsDto> getDealerGoodsList(GoodsTypeEnum goodsTypeEnum, Integer carStyleId, BigDecimal rental, BigDecimal bond, List<Integer> goodsIds);

    /**
     * 新增商品信息列表
     * @param createDto
     * @return
     */
    public int createGoodsProduct(GoodsBaseCreateDto createDto);

    /**
     * 根据商品ID获取商品信息
     * @param goodsId
     * @return
     */
    public GoodsDto getGoodsProduct(int goodsId);

    /**
     * 根据商品ID集合获取商品信息
     * @param goodsIds
     * @param vehicleIds
     * @return
     */
    public List<GoodsDto> getGoodsProductList(List<Integer> goodsIds, List<Integer> vehicleIds);

    /**
     * 设置商品禁售状态
     * @param goodsId
     * @param goodsForbidSaleEnum
     * @return
     * @throws Exception
     */
    public Boolean settingGoodsSale(int goodsId, GoodsForbidSaleEnum goodsForbidSaleEnum);


    /**
     * 查询有效的商品数量
     * @param goodsType （1：专属，2：订阅）
     * @return
     */
    public Integer getNoDeleteGoodsCount(Integer goodsType);
}
